home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / SLAX 6.0.8 / slax-6.0.8.iso / slax / base / 006-devel.lzm / usr / share / aclocal / intdiv0.m4 < prev    next >
Encoding:
M4 Source File  |  2008-03-13  |  2.3 KB  |  85 lines

  1. # intdiv0.m4 serial 2 (gettext-0.17)
  2. dnl Copyright (C) 2002, 2007 Free Software Foundation, Inc.
  3. dnl This file is free software; the Free Software Foundation
  4. dnl gives unlimited permission to copy and/or distribute it,
  5. dnl with or without modifications, as long as this notice is preserved.
  6.  
  7. dnl From Bruno Haible.
  8.  
  9. AC_DEFUN([gt_INTDIV0],
  10. [
  11.   AC_REQUIRE([AC_PROG_CC])dnl
  12.   AC_REQUIRE([AC_CANONICAL_HOST])dnl
  13.  
  14.   AC_CACHE_CHECK([whether integer division by zero raises SIGFPE],
  15.     gt_cv_int_divbyzero_sigfpe,
  16.     [
  17.       gt_cv_int_divbyzero_sigfpe=
  18. changequote(,)dnl
  19.       case "$host_os" in
  20.         macos* | darwin[6-9]* | darwin[1-9][0-9]*)
  21.           # On MacOS X 10.2 or newer, just assume the same as when cross-
  22.           # compiling. If we were to perform the real test, 1 Crash Report
  23.           # dialog window would pop up.
  24.           case "$host_cpu" in
  25.             i[34567]86 | x86_64)
  26.               gt_cv_int_divbyzero_sigfpe="guessing yes" ;;
  27.           esac
  28.           ;;
  29.       esac
  30. changequote([,])dnl
  31.       if test -z "$gt_cv_int_divbyzero_sigfpe"; then
  32.         AC_TRY_RUN([
  33. #include <stdlib.h>
  34. #include <signal.h>
  35.  
  36. static void
  37. sigfpe_handler (int sig)
  38. {
  39.   /* Exit with code 0 if SIGFPE, with code 1 if any other signal.  */
  40.   exit (sig != SIGFPE);
  41. }
  42.  
  43. int x = 1;
  44. int y = 0;
  45. int z;
  46. int nan;
  47.  
  48. int main ()
  49. {
  50.   signal (SIGFPE, sigfpe_handler);
  51. /* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP.  */
  52. #if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP)
  53.   signal (SIGTRAP, sigfpe_handler);
  54. #endif
  55. /* Linux/SPARC yields signal SIGILL.  */
  56. #if defined (__sparc__) && defined (__linux__)
  57.   signal (SIGILL, sigfpe_handler);
  58. #endif
  59.  
  60.   z = x / y;
  61.   nan = y / y;
  62.   exit (1);
  63. }
  64. ], gt_cv_int_divbyzero_sigfpe=yes, gt_cv_int_divbyzero_sigfpe=no,
  65.           [
  66.             # Guess based on the CPU.
  67. changequote(,)dnl
  68.             case "$host_cpu" in
  69.               alpha* | i[34567]86 | x86_64 | m68k | s390*)
  70.                 gt_cv_int_divbyzero_sigfpe="guessing yes";;
  71.               *)
  72.                 gt_cv_int_divbyzero_sigfpe="guessing no";;
  73.             esac
  74. changequote([,])dnl
  75.           ])
  76.       fi
  77.     ])
  78.   case "$gt_cv_int_divbyzero_sigfpe" in
  79.     *yes) value=1;;
  80.     *) value=0;;
  81.   esac
  82.   AC_DEFINE_UNQUOTED(INTDIV0_RAISES_SIGFPE, $value,
  83.     [Define if integer division by zero raises signal SIGFPE.])
  84. ])
  85.